package com.ihr360.commons.entity.metadata;

import com.ihr360.commons.model.ICodedEntity;
import com.ihr360.commons.model.IEngNamedEntity;
import com.ihr360.commons.model.IEntity;
import com.ihr360.commons.model.INamedEntity;

import java.io.Serializable;
import java.util.List;

/**
 * 实体元信息
 *
 * @param <ID>
 * @param <P>
 * @author davidwei
 */
public interface IEntityMeta<ID extends Serializable, P extends IPropertyMeta<ID, ? extends IEntityMeta<ID, P>>> extends IEntity<ID>, ICodedEntity, INamedEntity, IEngNamedEntity {
    Class<?> getType();

    void setType(Class<?> type);

    String getCode();

    void setCode(String code);

    String getName();

    void setName(String name);

    String getEngName();

    void setEngName(String engName);

    List<P> getPropMetas();

    void setPropMetas(List<P> propMetas);

    String getProvider();

    void setProvider(String provider);

    String getHql();

    void setHql(String hql);

    boolean isExtendable();

    void setExtendable(boolean extendable);
}
